/**
 * 解析播放URL格式
 * 例如："第01集$https://v.yzzy.com/player/kuangbiao_01.mp4#第02集$https://v.yzzy.com/player/kuangbiao_02.mp4"
 * 返回：[{name: "第01集", url: "https://v.yzzy.com/player/kuangbiao_01.mp4"}, ...]
 */
export function parsePlayUrl(playUrl: string | null): { name: string; url: string }[] {
  if (!playUrl) return [];

  return playUrl
    .split('#')
    .filter(item => item.includes('$'))
    .map(item => {
      const [name, url] = item.split('$');
      return { name, url };
    });
}

/**
 * 获取当前应该使用的根字体大小
 * 与use-rem-adapter.ts保持一致的计算逻辑
 * @param defaultFontSize 默认字体大小，通常为16px
 * @returns 当前应该使用的字体大小
 */
export function getRootFontSize(defaultFontSize: number = 16): number {
  // 服务器端或无法获取窗口对象时，返回默认值
  if (typeof window === 'undefined') {
    return defaultFontSize;
  }
  // 获取当前视口宽度
  const viewportWidth: number = document.body.clientWidth;
  if(viewportWidth < 1024){
    return 16
  }
  // 保持与use-rem-adapter.ts中的逻辑一致
  return viewportWidth / 1521 * 16;
}

/**
 * 动态计算宽度，根据HTML的字体大小动态适配
 * @param width 基于16px字体大小时的宽度值（单位px）
 * @param defaultFontSize 默认字体大小，通常为16px
 * @returns 根据当前字体大小比例计算后的值（单位px）
 */
export function dynamicWidth(width: number, defaultFontSize: number = 16): number {
  // 获取当前HTML元素的字体大小，使用统一的方法
  const currentFontSize = getRootFontSize(defaultFontSize);
  // alert(currentFontSize)
  // 计算比例并返回调整后的宽度
  const ratio = currentFontSize / defaultFontSize;
  return width * ratio;
}

/**
 * 格式化日期
 */
export function formatDate(date: Date | string | null): string {
  if (!date) return '';

  const d = typeof date === 'string' ? new Date(date) : date;

  return d.toLocaleDateString('zh-CN', {
    year: 'numeric',
    month: '2-digit',
    day: '2-digit'
  });
}

/**
 * 将数组切分成等长的数组
 */
export function chunkArray<T>(array: T[], size: number): T[][] {
  const chunks = [];
  for (let i = 0; i < array.length; i += size) {
    chunks.push(array.slice(i, i + size));
  }
  return chunks;
}

/**
 * 格式化播放量
 */
export function formatPlayCount(count: number | null | undefined): string {
  if (count === undefined || count === null) return '0';

  if (count < 1000) {
    return count.toString();
  } else if (count < 10000) {
    return (count / 1000).toFixed(1) + 'K';
  } else {
    return (count / 10000).toFixed(1) + '万';
  }
}

/**
 * 获取随机颜色
 */
export function getRandomColor(): string {
  const colors = [
    'bg-red-500',
    'bg-blue-500',
    'bg-green-500',
    'bg-yellow-500',
    'bg-purple-500',
    'bg-pink-500',
    'bg-indigo-500',
    'bg-teal-500',
  ];

  return colors[Math.floor(Math.random() * colors.length)];
} 